package com.sakura.system.controller.xycontroller;

import com.sakura.system.entity.xy.CinemaResult;
import com.sakura.system.entity.xy.DealData;
import com.sakura.system.entity.xy.StatisticData;
import com.sakura.system.service.impl.xyimpl.CardService;
import com.sakura.system.service.impl.xyimpl.MemberService;
import com.sakura.system.service.impl.xyimpl.RecordService;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
@CrossOrigin
@RestController
@RequestMapping("${app.router.url}")
public class StatisticController {
    @Resource
    MemberService memberService;
    @Resource
    CardService cardService;
    @Resource
    RecordService recordService;
/**
 * 获取统计数字数据的接口
 * 无请求参数
 * @return CinemaResult 包含统计数据的结果对象
 */
@RequestMapping("getStatisticData")
public CinemaResult getStatisticData(){
    // 创建StatisticData对象并设置统计数据显示
    StatisticData s = new StatisticData();
    s.setMemberNum(memberService.getMemberNum()); // 设置会员数量
    s.setCardNum(cardService.getCardNum()); // 设置卡片数量
    s.setMovieNum(recordService.getMovieNum()); // 设置电影数量
    return CinemaResult.ok(s);
}

    /**
     * 获取消费充值等金额数据的接口
     * 无参数请求，返回消费、充值等金额数据
     *
     * @return CinemaResult 包含消费、积分兑换、充值等数据的结果对象
     */
    @RequestMapping("requestDealData")
    public CinemaResult requestDealData(){
        // 创建DealData对象，用于存储消费、充值、积分等数据
        DealData dealData = new DealData();
        // 设置消费金额，以负数表示
        dealData.setConsume(recordService.getConsumeCount()*-1);
        // 设置积分兑换次数，以负数表示
        dealData.setIntegral(recordService.getIntegralExchangeCount()*-1);
        // 设置充值次数
        dealData.setRecharge(recordService.getRechargeCount());
        // 返回包含消费、充值等数据的结果对象
        return CinemaResult.ok(dealData);
    }

    /**
     * 获取充值消费数据的图标数据
     * 该方法不接受任何参数
     * @return CinemaResult 包含三个整型数组的对象，用于绘图数据
     */
    @RequestMapping("getSchart1Data")
    public CinemaResult getSchart1Data(){
        // 通过service层调用获取数据，返回给前端
        return CinemaResult.ok(recordService.getSchart1Data());
    }

}
